// Package types define the structure of request parameters and return results in this package
package types

import (
	"time"

	"github.com/zhufuyi/sponge/pkg/mysql/query"
)

var _ time.Time

// CreateTkUserAddressRequest create params
// todo fill in the binding rules https://github.com/go-playground/validator
type CreateTkUserAddressRequest struct {
	UserID     int    `json:"userId" binding:""`
	Phone      string `json:"phone" binding:""`      // 手机号
	Name       string `json:"name" binding:""`       // 收件人
	Province   string `json:"province" binding:""`   // 省
	City       string `json:"city" binding:""`       // 市
	AreaID     int    `json:"areaId" binding:""`     // 区ID
	Area       string `json:"area" binding:""`       // 区
	DetailInfo string `json:"detailInfo" binding:""` // 详细信息
	IsDefault  int    `json:"isDefault" binding:""`  // 是否默认选择：1-默认、0-不默认
}

// UpdateTkUserAddressByIDRequest update params
type UpdateTkUserAddressByIDRequest struct {
	ID uint64 `json:"id" binding:""` // uint64 id

	UserID     int    `json:"userId" binding:""`
	Phone      string `json:"phone" binding:""`      // 手机号
	Name       string `json:"name" binding:""`       // 收件人
	Province   string `json:"province" binding:""`   // 省
	City       string `json:"city" binding:""`       // 市
	AreaID     int    `json:"areaId" binding:""`     // 区ID
	Area       string `json:"area" binding:""`       // 区
	DetailInfo string `json:"detailInfo" binding:""` // 详细信息
	IsDefault  int    `json:"isDefault" binding:""`  // 是否默认选择：1-默认、0-不默认
}

// GetTkUserAddressByIDRespond respond detail
type GetTkUserAddressByIDRespond struct {
	ID string `json:"id"` // convert to string id

	UserID     int    `json:"userId"`
	Phone      string `json:"phone"`      // 手机号
	Name       string `json:"name"`       // 收件人
	Province   string `json:"province"`   // 省
	City       string `json:"city"`       // 市
	AreaID     int    `json:"areaId"`     // 区ID
	Area       string `json:"area"`       // 区
	DetailInfo string `json:"detailInfo"` // 详细信息
	IsDefault  int    `json:"isDefault"`  // 是否默认选择：1-默认、0-不默认
	UpdatedAt  int    `json:"updatedAt"`  // 更新时间
	CreatedAt  int    `json:"createdAt"`
}

// DeleteTkUserAddresssByIDsRequest request form ids
type DeleteTkUserAddresssByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkUserAddresssByIDsRequest request form ids
type GetTkUserAddresssByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkUserAddresssRequest request form params
type GetTkUserAddresssRequest struct {
	query.Params // query parameters
}

// ListTkUserAddresssRespond list data
type ListTkUserAddresssRespond []struct {
	GetTkUserAddressByIDRespond
}
